// 初始化个人资料功能
function initProfileManagement() {
    console.log('初始化个人资料功能...');
    const profileContent = document.getElementById('profile-content');
    if (!profileContent) {
        console.error('无法找到个人资料容器元素');
        return;
    }
    
    // 加载HTML模板
    fetch('templates/normal_profile.html')
        .then(response => {
            if (!response.ok) {
                throw new Error('无法加载模板文件');
            }
            return response.text();
        })
        .then(html => {
            // 将模板内容插入到页面中
            profileContent.innerHTML = html;
            
            // 绑定事件处理
            bindProfileEvents();
            
            // 获取当前用户信息
            loadProfileData();
        })
        .catch(error => {
            console.error('加载模板失败:', error);
            profileContent.innerHTML = '<div class="alert alert-danger">加载个人资料页面失败，请刷新重试</div>';
        });
}

// 加载个人资料数据
function loadProfileData() {
    fetch('getCurrentUser')
        .then(response => response.json())
        .then(data => {
            if (data.success && data.user) {
                const user = data.user;
                // 显示个人资料
                displayProfileInfo(user);
                // 填充表单数据
                fillProfileForm(user);
                // 检查是否在公司中，控制退出公司按钮显示
                checkCompanyStatus(user);
            } else {
                document.getElementById('user-profile').innerHTML = '<div class="alert alert-warning">获取用户信息失败</div>';
            }
        })
        .catch(error => {
            console.error('获取用户信息失败:', error);
            document.getElementById('user-profile').innerHTML = '<div class="alert alert-danger">网络错误，请稍后重试</div>';
        });
}

// 显示个人资料信息
function displayProfileInfo(user) {
    const profileElem = document.getElementById('user-profile');
    if (!profileElem) return;
    
    let roleText = '';
    switch (user.role) {
        case 0:
            roleText = '普通用户';
            break;
        case 1:
            roleText = '公司负责人';
            break;
        case 2:
            roleText = '系统管理员';
            break;
        default:
            roleText = '未知';
    }
    
    const userStatus = typeof user.status === 'number' ? user.status : parseInt(user.status);
    const statusText = userStatus === 1 ? '正常' : '禁用';
    
    // 获取模板并填充数据
    const templateElement = document.getElementById('user-profile-template');
    if (!templateElement) {
        console.error('找不到用户资料模板');
        return;
    }
    
    // 克隆模板内容
    const templateContent = templateElement.content.cloneNode(true);
    
    // 替换用户信息占位符
    let templateHtml = templateContent.querySelector('.user-profile-info').outerHTML;
    templateHtml = templateHtml.replace('{{userId}}', user.id || '')
                              .replace('{{userName}}', user.name || '')
                              .replace('{{userGender}}', user.gender || '')
                              .replace('{{userAge}}', user.age || '')
                              .replace('{{userPhone}}', user.phone || '')
                              .replace('{{userEmail}}', user.email || '未设置')
                              .replace('{{userAddress}}', (user.address && user.address !== 'null') ? user.address : '未设置')
                              .replace('{{userIdCard}}', (user.idCard && user.idCard !== 'null') ? maskIdCard(user.idCard) : '未设置')
                              .replace('{{userRole}}', roleText)
                              .replace('{{userStatus}}', statusText);
    
    // 处理公司信息
    if (user.companyId) {
        templateHtml = templateHtml.replace('{{showCompanyInfo}}', 'block')
                                  .replace('{{companyId}}', user.companyId || '')
                                  .replace('{{companyName}}', user.companyName || '')
                                  .replace('{{position}}', user.position || '未设置')
                                  .replace('{{employeeNumber}}', user.employeeNumber || '未设置');
    } else {
        templateHtml = templateHtml.replace('{{showCompanyInfo}}', 'none');
    }
    
    // 设置HTML内容
    profileElem.innerHTML = templateHtml;
}

// 身份证号脱敏处理，将中间10位替换为*号
function maskIdCard(idCard) {
    if (!idCard || idCard.length < 15) return idCard;
    
    // 对于18位身份证
    if (idCard.length === 18) {
        return idCard.substring(0, 4) + '**********' + idCard.substring(14);
    }
    
    // 对于15位身份证
    if (idCard.length === 15) {
        return idCard.substring(0, 3) + '*********' + idCard.substring(12);
    }
    
    // 其他情况，只显示前4位和后4位
    return idCard.substring(0, 4) + '*'.repeat(idCard.length - 8) + idCard.substring(idCard.length - 4);
}

// 填充表单数据
function fillProfileForm(user) {
    document.getElementById('profile-name').value = user.name || '';
    document.getElementById('profile-gender').value = user.gender || '男';
    document.getElementById('profile-age').value = user.age || '';
    document.getElementById('profile-phone').value = user.phone || '';
    document.getElementById('profile-email').value = user.email || '';
    document.getElementById('profile-address').value = user.address || '';
}

// 检查用户的公司状态，控制退出公司按钮显示
function checkCompanyStatus(user) {
    const leaveCompanyBtn = document.getElementById('leave-company-btn');
    if (leaveCompanyBtn) {
        if (user.companyId) {
            leaveCompanyBtn.style.display = 'inline-block';
        } else {
            leaveCompanyBtn.style.display = 'none';
        }
    }
}

// 绑定事件处理
function bindProfileEvents() {
    // 修改资料按钮
    const editProfileBtn = document.getElementById('edit-profile-btn');
    if (editProfileBtn) {
        editProfileBtn.addEventListener('click', function() {
            document.getElementById('user-profile').style.display = 'none';
            document.getElementById('profile-form-container').style.display = 'block';
            document.querySelector('.profile-actions').style.display = 'none';
        });
    }
    
    // 取消修改按钮
    const cancelEditBtn = document.getElementById('cancel-edit-btn');
    if (cancelEditBtn) {
        cancelEditBtn.addEventListener('click', function() {
            document.getElementById('user-profile').style.display = 'block';
            document.getElementById('profile-form-container').style.display = 'none';
            document.querySelector('.profile-actions').style.display = 'block';
        });
    }
    
    // 提交表单
    const updateProfileForm = document.getElementById('update-profile-form');
    if (updateProfileForm) {
        updateProfileForm.addEventListener('submit', function(e) {
            e.preventDefault();
            submitProfileData(new FormData(updateProfileForm));
        });
    }
    
    // 注销账号按钮
    const deleteAccountBtn = document.getElementById('delete-account-btn');
    if (deleteAccountBtn) {
        deleteAccountBtn.addEventListener('click', function() {
            if (confirm('确定要注销账号吗？此操作不可恢复！')) {
                deleteAccount();
            }
        });
    }
    
    // 退出公司按钮
    const leaveCompanyBtn = document.getElementById('leave-company-btn');
    if (leaveCompanyBtn) {
        leaveCompanyBtn.addEventListener('click', function() {
            if (confirm('确定要退出当前公司吗？')) {
                submitResignation();
            }
        });
    }
}

// 提交个人资料更新
function submitProfileData(formData) {
    // 检查必填字段
    const name = document.getElementById('profile-name').value.trim();
    const gender = document.getElementById('profile-gender').value;
    const age = document.getElementById('profile-age').value;
    const phone = document.getElementById('profile-phone').value.trim();
    
    // 验证必填字段
    if (!name || !gender || !age || !phone) {
        showMessage('姓名、性别、年龄和手机号不能为空', 'error');
        console.log('表单验证失败:', {name, gender, age, phone});
        return;
    }
    
    // 验证年龄
    const ageNumber = parseInt(age);
    if (isNaN(ageNumber) || ageNumber <= 0 || ageNumber > 150) {
        showMessage('年龄必须为正数，且不能超过150岁', 'error');
        return;
    }
    
    // 验证手机号格式
    if (!/^1\d{10}$/.test(phone)) {
        showMessage('请输入正确的11位手机号码', 'error');
        return;
    }
    
    // 创建要提交的数据对象
    const data = {
        name: name,
        gender: gender,
        age: ageNumber,
        phone: phone,
        email: document.getElementById('profile-email').value.trim(),
        address: document.getElementById('profile-address').value.trim()
    };
    
    console.log('准备提交的数据:', data);
    
    // 发送请求
    fetch('updateUserProfile', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    })
    .then(response => {
        console.log('服务器响应状态:', response.status);
        return response.json();
    })
    .then(data => {
        console.log('服务器响应数据:', data);
        if (data.success) {
            showMessage('个人资料更新成功', 'success');
            // 隐藏表单，显示个人资料
            document.getElementById('user-profile').style.display = 'block';
            document.getElementById('profile-form-container').style.display = 'none';
            document.querySelector('.profile-actions').style.display = 'block';
            
            // 重新加载个人资料
            loadProfileData();
        } else {
            showMessage(data.message || '更新失败', 'error');
        }
    })
    .catch(error => {
        console.error('更新个人资料失败:', error);
        showMessage('网络错误，请稍后重试', 'error');
    });
}

// 提交离职申请
function submitResignation() {
    const reason = prompt('请输入离职原因:');
    if (reason === null) return; // 用户取消输入
    
    fetch('submitResignation', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: `reason=${encodeURIComponent(reason)}`
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            showMessage('离职申请已提交，请等待公司审核', 'success');
            // 重新加载个人资料
            loadProfileData();
        } else {
            showMessage(data.message || '提交离职申请失败', 'error');
        }
    })
    .catch(error => {
        console.error('提交离职申请失败:', error);
        showMessage('网络错误，请稍后重试', 'error');
    });
}

// 注销账号
function deleteAccount() {
    fetch('userAccount', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: 'action=delete_account'
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            showMessage('账号已注销，即将跳转到登录页面', 'success');
            // 延迟跳转到登录页面
            setTimeout(() => {
                window.location.href = 'index.html';
            }, 2000);
        } else {
            showMessage(data.message || '注销账号失败', 'error');
        }
    })
    .catch(error => {
        console.error('注销账号失败:', error);
        showMessage('网络错误，请稍后重试', 'error');
    });
}

// 显示消息提示
function showMessage(message, type = 'info') {
    // 如果全局已有showMessage函数，则直接调用
    if (window.showMessage && typeof window.showMessage === 'function' && window.showMessage !== showMessage) {
        window.showMessage(message, type);
        return;
    }
    
    // 创建消息元素
    const messageElement = document.createElement('div');
    messageElement.className = `message-toast ${type}`;
    messageElement.textContent = message;
    
    // 添加到页面
    document.body.appendChild(messageElement);
    
    // 显示动画
    setTimeout(() => {
        messageElement.classList.add('show');
    }, 10);
    
    // 3秒后移除
    setTimeout(() => {
        messageElement.classList.remove('show');
        setTimeout(() => {
            document.body.removeChild(messageElement);
        }, 300);
    }, 3000);
}

// 页面加载时初始化
document.addEventListener('DOMContentLoaded', function() {
    // 检查是否在个人资料页面
    const profileContent = document.getElementById('profile-content');
    if (profileContent) {
        initProfileManagement();
    }
}); 